package org.mte.sak.file;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

//import org.apache.commons.net.PrintCommandListener;
//import org.apache.commons.net.ftp.FTP;
//import org.apache.commons.net.ftp.FTPClient;
//import org.apache.commons.net.ftp.FTPReply;

/**
 * FTPManager
 *
 * @author Marco Traversari
 * @version $Revision: 1.1 $ $Date: 2011-04-18 08:37:59 $ $Author: marco $
 */
public class FTPManager {

//    public static final String COMMAND_LINE_USAGE =
//        "Usage: ftp [-s] [-b] <hostname> <username> <password> <remote file> <local file>\n" +
//        "\nDefault behavior is to download a file and use ASCII transfer mode.\n" +
//        "\t-s store file on server (upload)\n" +
//        "\t-b use binary transfer mode\n";
//
//	/**
//	 * ftpClient
//	 */
//	protected FTPClient ftpClient = null;
//
//	/**
//	 * server
//	 */
//	protected String server = null;
//
//	/**
//	 * username
//	 */
//	protected String username = null;
//
//	/**
//	 * password
//	 */
//	protected String password = null;
//
//	/**
//	 * isBinaryTransfer
//	 */
//	protected boolean isBinaryTransfer = false;
//
//	/**
//	 * FTPManager
//	 * @param server
//	 * @param username
//	 * @param password
//	 * @param isBinaryTransfer
//	 */
//	public FTPManager(String server, String username, String password, boolean isBinaryTransfer) {
//		ftpClient = new FTPClient();
//		this.server = server;
//		this.username = username;
//		this.password = password;
//		this.isBinaryTransfer = isBinaryTransfer;
//	}
//
//	/**
//	 * connect
//	 * @param server
//	 * @param username
//	 * @param password
//	 * @param isBinaryTransfer
//	 * @throws IOException
//	 */
//	public void connect() throws IOException {
//
//		ftpClient.connect(server);
//        System.out.println("connected to " + server);
//        if (isBinaryTransfer) {
//        	ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//		}
//		// After connection attempt, you should check the reply code to verify
//		// success.
//		int reply = ftpClient.getReplyCode();
//
//		if (!FTPReply.isPositiveCompletion(reply)) {
//			ftpClient.disconnect();
//			System.err.println("FTP server refused connection");
//		}
//		if (!ftpClient.login(username, password)) {
//			ftpClient.logout();
//			throw new IOException("FTP server refused login");
//		}
//		ftpClient.enterLocalPassiveMode();
//	}
//
//	/**
//	 * disconnect
//	 * @throws IOException
//	 */
//	public void disconnect() throws IOException {
//		if (ftpClient != null && ftpClient.isConnected()) {
//			ftpClient.logout();
//	        System.out.println("logout");
//			ftpClient.disconnect();
//	        System.out.println("disconnect");
//		}
//	}
//
//	/**
//	 * store
//	 * @param localFilePath
//	 * @param remoteFilePath
//	 * @throws IOException
//	 */
//	public void store(String localFilePath, String remoteFilePath) throws IOException {
//		System.out.println("from local " + localFilePath + " to remote " + remoteFilePath);
//        InputStream input = new FileInputStream(localFilePath);
//        ftpClient.storeFile(remoteFilePath, input);
//        input.close();
//
//	}
//
//	/**
//	 * retrieve
//	 * @param localFilePath
//	 * @param remoteFilePath
//	 * @throws Exception
//	 */
//	public void retrieve(String localFilePath, String remoteFilePath) throws Exception {
//		System.out.println("from remote " + remoteFilePath + " to local " + localFilePath);
//        OutputStream output = new FileOutputStream(localFilePath);
//        ftpClient.retrieveFile(remoteFilePath, output);
//        output.close();
//	}
//
//	/**
//	 * getFtpClient
//	 * @return ftpClient
//	 */
//	public FTPClient getFtpClient() {
//		return ftpClient;
//	}
//
//	/**
//	 * setFtpClient
//	 * @param ftpClient
//	 */
//	public void setFtpClient(FTPClient ftpClient) {
//		this.ftpClient = ftpClient;
//	}
//
//	/**
//	 * getServer
//	 * @return server
//	 */
//	public String getServer() {
//		return server;
//	}
//
//	/**
//	 * setServer
//	 * @param server
//	 */
//	public void setServer(String server) {
//		this.server = server;
//	}
//
//	/**
//	 * getUsername
//	 * @return username
//	 */
//	public String getUsername() {
//		return username;
//	}
//
//	/**
//	 * setUsername
//	 * @param username
//	 */
//	public void setUsername(String username) {
//		this.username = username;
//	}
//
//	/**
//	 * getPassword
//	 * @return password
//	 */
//	public String getPassword() {
//		return password;
//	}
//
//	/**
//	 * setPassword
//	 * @param password
//	 */
//	public void setPassword(String password) {
//		this.password = password;
//	}
//
//	/**
//	 * isBinaryTransfer
//	 * @return isBinaryTransfer
//	 */
//	public boolean isBinaryTransfer() {
//		return isBinaryTransfer;
//	}
//
//	/**
//	 * setBinaryTransfer
//	 * @param isBinaryTransfer
//	 */
//	public void setBinaryTransfer(boolean isBinaryTransfer) {
//		this.isBinaryTransfer = isBinaryTransfer;
//	}
//
//	/**
//	 * main
//	 * @param args
//	 */
//    public static final void main(String[] args)  {
//        int base = 0;
//        boolean isStoreFile = false;
//        boolean isBinaryTransfer = false;
//        String server = null;
//        String username = null;
//        String password = null;
//        String remote = null;
//        String local = null;
//        FTPManager ftpManager = null;
//        for (base = 0; base < args.length; base++) {
//            if (args[base].startsWith("-s"))
//            	isStoreFile = true;
//            else if (args[base].startsWith("-b"))
//            	isBinaryTransfer = true;
//            else
//                break;
//        }
//
//        if ((args.length - base) != 5) {
//            System.err.println(COMMAND_LINE_USAGE);
//            System.exit(1);
//        }
//        server = args[base++];
//        username = args[base++];
//        password = args[base++];
//        remote = args[base++];
//        local = args[base];
//		try {
//			ftpManager = new FTPManager(server, username, password, isBinaryTransfer);
//			ftpManager.getFtpClient().addProtocolCommandListener(new PrintCommandListener(
//                    new PrintWriter(System.out)));
//			ftpManager.connect();
//			if (isStoreFile) {
//				ftpManager.store(local, remote);
//			} else {
//				ftpManager.retrieve(local, remote);
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				if (ftpManager != null) {
//					ftpManager.disconnect();
//				}
//			} catch (IOException ioe) {
//				ioe.printStackTrace();
//			}
//		}
//    }
//
//	/**
//	 * main
//	 * @param args
//	 */
//	/*public void main(String[] args) {
//		FTPManager ftp = null;
//		try {
//			ftp = new FTPManager("s155.eatj.com", "mte", "ej29123c0", true);
//			ftp.connect();
//			ftp.store("/home/marco/trash/risposte_11-09.pdf", "backup/risposte_11-09.pdf");
//			ftp.retrieve("/home/marco/trash/risposte3.pdf", "backup/risposte_11-09.pdf");
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				if (ftp != null) {
//					ftp.disconnect();
//				}
//			} catch (IOException ioe) {
//				ioe.printStackTrace();
//			}
//		}
//	}*/
}
